package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.EmployeeBean;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface IEmployeeMapper {
    /**
     * 添加员工
     * @param employee 员工对象
     */
    @Insert("insert into t_employee(e_name,e_birthday,e_skill,e_state,e_salary,e_tel,e_inDate,e_faceImage)" +
            "values(#{name},#{birthday},#{skill},#{state},#{salary},#{tel},#{inDate},#{faceImg})")
    public void add(EmployeeBean employee);

    /**
     * 员工离职，修改状态为离职
     * 将该员工正在进行的项目完成日期修改为当前时间
     * @param id 员工id
     */
    public void del(int id);
    /**
     * 按id修改员工信息
     * @param id 员工id
     * @param tel 员工新电话
     * @param salary 员工新工资
     */
    public void update(@Param("id") int id ,@Param("tel") String tel,@Param("salary") int salary);
    /**
     * 按id查找员工信息，同时查找该员工参与的项目名称，参与时间，完成日期
     * @param id 员工id
     * @return 员工对象
     */
    public EmployeeBean findById(int id);
    /**
     * 动态条件查询员工信息，同时查找该员工参与的项目集合
     * @param name 员工姓名
     * @param skill 员工专长
     * @param state 员工状态
     * @param sort 排序规则
     * @return 员工分页对象
     */
    public List<EmployeeBean> findByItem(@Param("name") String name,
                                        @Param("skill") String skill,
                                        @Param("state") String state,
                                        @Param("sort") String sort);
    /**
     * 动态条件查询不在指定项目中的员工，同时统计每个员工正在进行的项目数量
     * @param projectId 项目id
     * @param name 员工姓名
     * @param skill 员工专长
     * @return 员工集合
     */
    public List<EmployeeBean> findNotInProject(@Param("projectId") int projectId,
                                              @Param("name") String name,
                                              @Param("skill") String skill);
}
